package com.openlogic.logic.service.logic;

import java.util.List;
import java.util.Map;

import com.openlogic.api.logic.entity.RuleModelDeploy;

/**
 * @ClassName: RuleModelDeployService
 * @Description: 规则模型Service接口
 * @author weiyongpeng
 * @date 2024年7月14日 上午10:15:24
 */
public interface RuleModelDeployService {

	/**
	 * 描述：查询规则模型列表
	 * @Title: findRuleDeployList
	 * @param model
	 * @return
	 * @author weiyongpeng
	 * @date 2024年7月14日 上午9:40:51
	 */
	public List<RuleModelDeploy> findRuleDeployList(RuleModelDeploy model);

	/**
	 * 描述：根据规则Id查询规则
	 * @Title: findRuleDeployById
	 * @param ruleModelDeploy
	 * @return
	 * @author weiyongpeng
	 * @date 2024年7月15日 下午4:09:44
	 */
	public RuleModelDeploy findRuleDeployById(RuleModelDeploy ruleModelDeploy);

	/**
	 * 描述：保存规则数据集
	 * @Title: save
	 * @param ruleModelDeploy
	 * @return
	 * @author weiyongpeng
	 * @date 2024年7月15日 下午7:22:05
	 */
	public int save(RuleModelDeploy ruleModelDeploy, String resValue);

	/**
	 * 描述：保存规则
	 * @Title: saveRuleModel
	 * @param ruleModelDeploy
	 * @return
	 * @author weiyongpeng
	 * @date 2024年7月15日 下午7:20:09
	 */
	public int saveRuleModel(RuleModelDeploy ruleModelDeploy);

	/**
	 * 描述：修改规则
	 * @Title: updateRuleModel
	 * @param ruleModelDeploy
	 * @return
	 * @author weiyongpeng
	 * @date 2024年7月15日 下午7:20:09
	 */
	public int updateRuleModel(RuleModelDeploy ruleModelDeploy);

	/**
	 * 描述：修改规则状态 启用/停用
	 * @Title: updateStatus
	 * @param ruleModelDeploy
	 * @return
	 * @author weiyongpeng
	 * @date 2024年7月16日 上午10:33:50
	 */
	public boolean updateStatus(RuleModelDeploy ruleModelDeploy);

	/**
	 * 描述：删除规则状态
	 * @Title: delete
	 * @param ruleModelKey
	 * @return
	 * @author weiyongpeng
	 * @date 2024年7月16日 上午11:30:05
	 */
	public boolean delete(String ruleModelKey);

	/**
	 * 描述：根据参数查询规则列表
	 * @Title: findRuleDeployByParams
	 * @param ruleModelKey
	 * @return
	 * @author weiyongpeng
	 * @date 2024年7月19日 上午8:51:32
	 */
	public List<RuleModelDeploy> findRuleDeployByParams(Map<String, Object> params);

	/**
	 * 描述：查询规则调用所需数据
	 * @Title: findRuleExecuateInfoById
	 * @param id
	 * @return
	 * @author weiyongpeng
	 * @date 2024年7月20日 上午11:44:24
	 */
	public List<Map<String, Object>> findRuleExecuateInfoById(String id);

	/**
	 * 描述：规则执行
	 * @Title: execuateRule
	 * @param dataInfo    入参
	 * @param jsonStr     原始规则json
	 * @param ruleAttrMap 规则变量Map
	 * @param operateNo   操作人
	 * @return
	 * @author weiyongpeng
	 * @date 2024年7月20日 下午3:06:35
	 */
	public String execuateRule(String datas, String id, String operateNo);

	/**
	 * 描述：校验公式合法性
	 * @Title: checkFormulae
	 * @param params
	 * @return
	 * @author weiyongpeng
	 * @date 2024年7月26日 上午9:55:19
	 */
	public List<Map<String, Object>> checkFormulae(Map<String, Object> params) throws Exception;

	/**
	 * 描述：内部调用查询接口
	 * @Title: findRuleDeployModelInner
	 * @param params
	 * @return
	 * @author weiyongpeng
	 * @date 2024年7月28日 上午11:31:49
	 */
	public List<Map<String, Object>> findRuleDeployModelInner(Map<String, Object> params);

	/**
	 * 描述：查询规则列表数据
	 * @Title: findRuleDeployModel
	 * @param params
	 * @return
	 * @author weiyongpeng
	 * @date 2024年8月3日 下午1:43:37
	 */
	public List<RuleModelDeploy> findRuleDeployModel(Map<String, Object> params);

}
